Много задач сводиться нельзя формализовать. Ну например ввод остатков. Субконто могут быть разные. Кроме того, если речь заходит о универсальных документах, например авансовый отчет то в нем могут быть совершенно разные корреспонденции счетов, а у счетов могут быть разные субконто. Как тут поступать? Можно сделать неопределенный реквизит.
А определять его программный путем в зависимости от корреспонденции счетов. Итак сделаем на документ кнопку по которой будет менять тип реквизита. Основа всего функция Назначить тип.
НазначитьТип
Назначить тип для реквизита неопределенного
вида.
Синтаксис:
НазначитьТип(<ИмяРеквизита>,
<ИмяТипа>, <Длина>, <Точность>)
Англоязычный
синоним:
SetType
Параметры:
<ИмяРеквизита> Строковое выражение — название реквизита
документа неопределенного типа, как он назван в
конфигураторе.
<ИмяТипа> Строковое выражение — название типа данных
(или Вид субконто), который назначается реквизиту документа. Например:"Строка",
"Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т.
п.
<Длина> Необязательный параметр. Числовое выражение — длина поля
представления данных. Имеет смысл только при задании числового или строкового
типа.
<Точность> Необязательный параметр. Числовое выражение — число
знаков числа после десятичной точки. Имеет смысл только при задании числового
типа.
Описание:
Метод НазначитьТип позволяет назначить тип для реквизита,
которому в конфигураторе назначен тип «Неопределенный».
Пишем код.
Процедура Изменить() Форма.Субконто.НазначитьТип("Справочник.Номенклатура"); КонецПроцедуры
Пробуем. Если кнопку не нажимать то выбрать субконто будет нельзя.
После установки типа субконто уже можно будет выбрать.